Why is the Pipedream Component Action 'google_calendar-create-event' Failing Due to a Date Format Issue Despite Using Correct ISO 8601 Format?

This topic was automatically generated from Slack. You can find the original thread here.

Hi everyone :wave:
I’m running into an issue when trying to execute a Pipedream component action, specifically google_calendar-create-event, and I could use some help understanding why it’s failing.
I’m executing the action using the SDK with the following call:

const result = await client.actions.run(payload)

I’m confident that both the client setup and the payload structure are correct, since I’m sending the payload in the following format:

{
  "id": "google_calendar-create-event",
  "externalUserId": "xxx",
  "configuredProps": {
    "addType": { "__lv": { "label": "Add Detailed Event", "value": "detailed" } },
    "eventStartDate": "2026-01-09T15:00:00.000Z",
    "eventEndDate": "2026-01-09T15:20:00.000Z",
    "attendees": "[alejandromira3918@hotmail.com](mailto:alejandromira3918@hotmail.com)",
    "googleCalendar": { "authProvisionId": "apn_xxx" }
  }
}

However, when executing the action—both via Postman using the HTTP endpoint and via the SDK—I consistently receive the following error:

{
  "os": [
    {
      "ts": 1767909321637,
      "k": "error",
      "err": {
        "name": "Error",
        "message": "Start and end times must either both be date or both be dateTime.",
        "stack": "Error: Start and end times must either both be date or both be dateTime.\n    at makeErrorObservation ..."
      }
    }
  ],
  "exports": {},
  "t": {
    "ar": 1767909309179,
    "br": 1767909309226,
    "bp": 1767909309226,
    "bls": 1767909309226,
    "ble": 1767909321649
  }
}

From what I can tell, this seems to be a date format issue. However, the format I’m sending (ISO 8601 with timezone) appears to be correct and is the same format shown in the Pipedream Connect playground.
At this point, I’m trying to understand:
• Why the component is interpreting the start/end values as mismatched (date vs dateTime)
• Whether there’s an additional or implicit field required for this action that I might be missing
Any guidance on what I might be doing wrong or how this action expects the dates to be formatted would be greatly appreciated.
Thanks in advance! :pray:

Ah I think you’re missing the dynamicPropsId there, but that’s a poorly designed action. There isn’t a good reason for us to use dynamic props in that context. Executing Actions - Pipedream

We should fix that action, but you will need to handle dynamic props in your implementation more broadly

So do I need to include the dynamicPropsId field no matter what for this action to work correctly?

For any action that has prop where reloadProps: true, yes.

In this case is the prop calendarId ? is the only one i’m seeing that have reloadProps: true

calendarId has remoteOptions: true, but addType has reloadProps: true

Ahh yes, my mistake jeje

{
  data: {
    name: "Create Event",
    description: "Create an event in a Google Calendar. [See the documentation](https://developers.google.com/calendar/api/v3/reference/events/insert)",
    componentType: "action",
    version: "0.2.7",
    key: "google_calendar-create-event",
    annotations: {
      readOnlyHint: false,
      openWorldHint: true,
      destructiveHint: false
    },
    configurableProps: [
      {
        type: "app",
        app: "google_calendar",
        name: "googleCalendar"
      },
      {
        type: "string",
        options: [
          {
            label: "Add Detailed Event",
            value: "detailed"
          },
          {
            label: "Add Quick Event using Natural Language",
            value: "quick"
          }
        ],
        name: "addType",
        label: "Type of Add",
        description: "Whether to perform a quick add or a detailed event",
        reloadProps: true
      },
      {
        type: "string",
        default: "primary",
        name: "calendarId",
        label: "Calendar ID",
        description: "Optionally select the calendar, defaults to the primary calendar for the logged-in user",
        optional: true,
        remoteOptions: true
      },
      {
        type: "string",
        name: "text",
        label: "Describe Event",
        description: "Write a plain text description of event, and Google will parse this string to create the event. eg. 'Meet with Michael 10am 7/22/2024' or 'Call Sarah at 1:30PM on Friday'",
        hidden: true
      },
      {
        type: "string",
        name: "summary",
        label: "Event Title",
        description: "Enter a title for the event, (e.g., `My event`)",
        optional: true,
        hidden: true
      },
      {
        type: "string",
        name: "colorId",
        label: "Color ID",
        description: "The color assigned to this event on your calendar. You can only select a color from the list of event colors provided from your calendar. This setting will only affect your calendar.",
        optional: true,
        remoteOptions: true,
        hidden: true
      },
      {
        type: "string",
        name: "timeZone",
        label: "Time Zone",
        description: "Time zone used in the response. Optional. The default is the time zone of the calendar.",
        optional: true,
        remoteOptions: true,
        hidden: true
      },
      {
        type: "string",
        options: [
          "all",
          "externalOnly",
          "none"
        ],
        name: "sendUpdates",
        label: "Send Updates",
        description: "Configure whether to send notifications about the event",
        optional: true,
        hidden: true
      },
      {
        type: "boolean",
        name: "createMeetRoom",
        label: "Create Meet Room",
        description: "Whether to create a Google Meet room for this event.",
        optional: true,
        hidden: true
      },
      {
        type: "string",
        options: [
          "default",
          "public",
          "private",
          "confidential"
        ],
        name: "visibility",
        label: "Visibility",
        description: "Visibility of the event",
        optional: true,
        hidden: true
      }
    ]
  }
}

So the idea would be to configure that prop first, and then run the action using the ID returned by that process?
I’ll run more tests with this information and hope it works.

That’s exactly right, and to call reloadProps